Cloud Native Applications (CNAs) can implement microservices architectures in which applications are composed of reusable services. NCAs can provide service reuse, meaning that the same service can be used by multiple applications. Each of the multiple applications needs to isolate their use of a service from the use of the same service by other applications. Each application can create its own instance of a service, and after instance creation, the service can process application requests in the context of a respective service instance bound to a specific application.
However, this type of isolation can fail when, for example, services are consumed indirectly through other services, such as when services are stacked. Stacking can occur, for example, when a main service S1 uses an indirectly-consumed service S2. The isolation can fail, for example, because the main service (for example, S1) traditionally creates just one instance of the indirectly-consumed service (for example, service S2). Service S1 can then use the one service instance (for example, S2) for all of S1's own service instances that 51 provides to consuming applications. Taking this approach can cause the indirectly-consumed service (for example, S2) to lose context information about the application that is consuming the service. This context information may only be available at directly-consumed services (for example, S1). As a result, indirectly-consumed services (for example, S2) cannot maintain isolation of context information at the application level.